home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / c / gemforce / demo / gf_test.c next >
Encoding:
C/C++ Source or Header  |  1994-09-22  |  6.9 KB  |  273 lines

  1. /*   GEM-Force-Testprogramm by RenĂ© Rosendahl, (C) 1993   */
  2.  
  3. # include "GFIMPORT.H"
  4. # include "GFGLOBAL.H"
  5. # include "GFWINDWS.H"
  6. # include <aes.h>
  7. # include <stdio.h>
  8. # include <string.h>
  9. # include "gf_test.h"
  10.  
  11. void  exit ( int );
  12.  
  13. # include "GFEXPORT.H"
  14.  
  15. /*-----------------------------------------------------------------*/
  16.  
  17. # define TW_MAX_W 60
  18. # define TW_MAX_H 20
  19.  
  20. /*--------------------- globals -----------------------------------*/
  21.  
  22. GLOBAL OBJECT *userimg, *menu, *infoform, *demoform, *sysinfo;
  23. GLOBAL OBJECT *popup, *winobj;
  24. GLOBAL BOOLEAN topmes = FALSE, prg_ende = FALSE;
  25. GLOBAL WINDOWP txtwin1, txtwin2, objwin;
  26.  
  27. /*---------------------- locals -----------------------------------*/
  28.  
  29. LOCAL    char lines[TW_MAX_H][TW_MAX_W];
  30.  
  31. /*---------------------- prototypes -------------------------------*/
  32.  
  33. LOCAL void fill_sysinfo ( void );
  34. LOCAL void hndl_menu ( int );
  35. LOCAL void top_alert ( WINDOWP );
  36. LOCAL void untop_alert ( WINDOWP );
  37. LOCAL void flip_menu ( int, BOOLEAN * );
  38.  
  39. /*-----------------------------------------------------------------*/
  40.  
  41. void main ( void )
  42. {
  43.     int msg[8], mk_state, mk_return, ev_ret, dummy, title, item, s;
  44.     KEYINFO ki;
  45.     RECT r;
  46.     char buf [TW_MAX_W + 1];
  47.     
  48.     init_gem ();
  49.     
  50.     if ( ! init_windows ( "[3][Keine Fenster mehr !][Abbruch]", 10 ) )
  51.     {
  52.         form_alert ( 1, "[3][Modul WINDOWS lies sich|nicht korrekt ini-|tialisieren...][Shit !]" );
  53.         exit_gem ();
  54.         exit ( 1 );
  55.     }
  56.         
  57.     if ( ! rsc_load ( "[3][Fehler beim Laden der |RSC-Datei !][Abbruch]",
  58.                             "GF_TEST.RSC" ) )
  59.     {
  60.         exit_gem ();
  61.         exit ( 1 );
  62.     }
  63.     
  64.     init_tree ( USERIMG,  &userimg,  FALSE );
  65.     init_tree ( MENU,     &menu,     FALSE );
  66.     init_tree ( SYSINFO,  &sysinfo,  TRUE );
  67.     init_tree ( DEMOFORM, &demoform, TRUE );
  68.     init_tree ( INFOFORM, &infoform, TRUE );
  69.     init_tree ( WINOBJ,   &winobj,   FALSE );
  70.     init_tree ( POPUP,    &popup,    FALSE );
  71.  
  72.     fill_sysinfo ();
  73.  
  74.     menu_bar ( menu, TRUE );
  75.  
  76.     xywh2rect ( 55, 83, 302, 197, &r );
  77.     txtwin1 = create_textwindow ( ( char *) lines, TW_MAX_W - 1, 
  78.                  TW_MAX_H, ALL, &r );
  79.     if ( txtwin1 != NULL )
  80.     {
  81.         strcpy ( txtwin1->name, " Textfenster 1 " );
  82.         strcpy ( txtwin1->info, " dies ist die Info-Zeile in Textfenster 1" );
  83.         txtwin1->top = top_alert;
  84.         txtwin1->untop = untop_alert;
  85.     }
  86.  
  87.     xywh2rect ( 221, 159, 313, 147, &r );
  88.     txtwin2 = create_textwindow ( ( char *) lines, TW_MAX_W - 1, 
  89.                  TW_MAX_H, ALL, &r );
  90.     if ( txtwin2 != NULL )
  91.     {
  92.         strcpy ( txtwin2->name, " Textfenster 2 " );
  93.         strcpy ( txtwin2->info, " dies ist die Info-Zeile in Textfenster 2" );
  94.         txtwin2->top = top_alert;
  95.         txtwin2->untop = untop_alert;
  96.     }
  97.  
  98.     for ( s = 0; s < TW_MAX_H; s++ )
  99.     {
  100.         sprintf ( buf, "Dies ist die Text-Zeile mit der Nummer %d.", s + 1);
  101.         strcpy ( lines[s], buf );
  102.     }
  103.     
  104.     objwin = create_window ( NAME|CLOSER|MOVER, 0 );
  105.     if ( objwin != NULL )
  106.     {
  107.         objwin->flags |= WI_RESIDENT;
  108.         objwin->object = winobj;
  109.         objwin->work.x = 280;
  110.         objwin->work.y = 100;
  111.         objwin->work.w = winobj->ob_width;
  112.         objwin->work.h = winobj->ob_height;
  113.         objwin->scroll = objwin->work;
  114.         objwin->doc.w  = winobj->ob_width;
  115.         objwin->doc.h  = winobj->ob_height;
  116.         objwin->xfac   =    objwin->yfac = 1;
  117.         strcpy ( objwin->name, " Objektfenster " );
  118.         objwin->top = top_alert;
  119.         objwin->untop = untop_alert;
  120.     }        
  121.  
  122.     open_window ( txtwin1 );
  123.     open_window ( txtwin2 );
  124.     open_window ( objwin );
  125.     
  126.     do
  127.     {
  128.         ev_ret = evnt_multi ( MU_KEYBD | MU_MESAG, 0,0,0,0,0,0,0,0,0,0,0,0,0,
  129.                          msg, 0,0,&dummy,&dummy,&dummy, &mk_state, &mk_return,
  130.                          &dummy );
  131.                          
  132.         if ( ev_ret & MU_KEYBD )
  133.         {
  134.             get_keyinfo ( mk_state, mk_return, &ki );
  135.             if ( find_menu_item ( menu, &ki, &title, &item ) )
  136.                 hndl_menu ( item );
  137.         }
  138.         
  139.         if ( ( ev_ret & MU_MESAG ) && ( msg[0] == MN_SELECTED ) )
  140.         {
  141.             hndl_menu ( msg[4] );
  142.             menu_tnormal ( menu, msg[3], TRUE );
  143.         }
  144.         
  145.         handle_window_events ( msg );
  146.         
  147.     } while ( !prg_ende );
  148.     
  149.     menu_bar ( menu, FALSE );
  150.     
  151.     exit_windows ();
  152.     exit_gem ();
  153. }
  154.  
  155. /*-----------------------------------------------------------------*/
  156.  
  157. void fill_sysinfo ( void )
  158. {
  159.     sprintf ( TE_PTEXT ( sysinfo, TOS ), "%d", tos );
  160.     sprintf ( TE_PTEXT ( sysinfo, PHYS ), "%d", phys_handle );
  161.     sprintf ( TE_PTEXT ( sysinfo, VDI ), "%d", vdi_handle );
  162.     sprintf ( TE_PTEXT ( sysinfo, APPLID ), "%d", appl_id );
  163.     sprintf ( TE_PTEXT ( sysinfo, GDOS ), "%ld", gdos );
  164.     sprintf ( TE_PTEXT ( sysinfo, COLORS ), "%d", colors );
  165.     sprintf ( TE_PTEXT ( sysinfo, WBOX ), "%d", gl_wbox );
  166.     sprintf ( TE_PTEXT ( sysinfo, HBOX ), "%d", gl_hbox );
  167.     sprintf ( TE_PTEXT ( sysinfo, WCHAR ), "%d", gl_wchar );
  168.     sprintf ( TE_PTEXT ( sysinfo, HCHAR ), "%d", gl_hchar );
  169.     sprintf ( TE_PTEXT ( sysinfo, WATTR ), "%d", gl_wattr );
  170.     sprintf ( TE_PTEXT ( sysinfo, HATTR ), "%d", gl_hattr );
  171.     sprintf ( TE_PTEXT ( sysinfo, DESKX ), "%d", desk.x );
  172.     sprintf ( TE_PTEXT ( sysinfo, DESKY ), "%d", desk.y );
  173.     sprintf ( TE_PTEXT ( sysinfo, DESKW ), "%d", desk.w );
  174.     sprintf ( TE_PTEXT ( sysinfo, DESKH ), "%d", desk.h );
  175. }
  176.  
  177. /*-----------------------------------------------------------------*/
  178.  
  179. LOCAL void hndl_menu ( int item )
  180. {
  181.     int ex_obj;
  182.     static int sel_popup = HEADING;
  183.     
  184.     switch ( item )
  185.     {
  186.         case ENDE:
  187.             prg_ende = TRUE;
  188.             break;
  189.         case INFOPRG:
  190.             do_dialog ( infoform, 0 );
  191.             break;
  192.         case SYSTEM:
  193.             do_dialog ( sysinfo, 0 );
  194.             break;
  195.         case FORMDO:
  196.             do_dialog ( demoform, 0 );
  197.             break;
  198.         case FORMDIAL:
  199.             dialog_on ( demoform );
  200.             do
  201.             {
  202.                 ex_obj = form_dialog ( demoform, 0 );
  203.                 if ( ex_obj == TOUCHBUT ) 
  204.                 {
  205.                     objc_draw ( demoform, TOUCHBUT, 1, 0, 0, 0, 0 );
  206.                     bell ();
  207.                 }
  208.             } while ( ex_obj == TOUCHBUT );
  209.             dialog_off ( demoform );
  210.             break;
  211.         case GROW:
  212.             flip_menu ( GROW, &grow_shrink );
  213.             break;
  214.         case SAVE:
  215.             flip_menu ( SAVE, &save_bg );
  216.             break;
  217.         case TOPMES:
  218.             flip_menu ( TOPMES, &topmes );
  219.             break;
  220.         case TEXT1:
  221.             open_window ( txtwin1 );
  222.             break;
  223.         case TEXT2:
  224.             open_window ( txtwin2 );
  225.             break;
  226.         case OBJEKT:
  227.             open_window ( objwin );
  228.             break;
  229.         case SHOPOPUP:
  230.             sel_popup = popup_menu ( popup, POPUPMEN, 0, 0, sel_popup, TRUE, 1 );
  231.             break;
  232.         case LOCK:
  233.             lock_all ( objwin );
  234.             break;
  235.         case UNLOCK:
  236.             unlock_all ();
  237.             break;
  238.     }
  239. }
  240.  
  241. /*-----------------------------------------------------------------*/
  242.  
  243. LOCAL void top_alert ( WINDOWP wp )
  244. {    
  245.     char buf[128];
  246.     
  247.     if ( topmes )
  248.     {
  249.         sprintf ( buf, "[1][Das%s|wurde getoppt !][ OK ]", wp->name );
  250.         form_alert ( 1, buf );
  251.     }
  252. }
  253.  
  254. /*-----------------------------------------------------------------*/
  255.  
  256. LOCAL void untop_alert ( WINDOWP wp )
  257. {    
  258.     char buf[128];
  259.     
  260.     if ( topmes )
  261.     {
  262.         sprintf ( buf, "[1][Das%s|wurde ge-un-toppt !][ OK ]", wp->name );
  263.         form_alert ( 1, buf );
  264.     }
  265. }
  266.  
  267. /*-----------------------------------------------------------------*/
  268.  
  269. LOCAL void flip_menu ( int item, BOOLEAN *var )
  270. {
  271.     flip_state ( menu, item, CHECKED );
  272.     *var = ( *var == FALSE );
  273. }